﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;

namespace DiaryPlanner.Diary
{
    public partial class diary_del : Form
    {
        Diary_main object_diary_main;//Diary_main의 object를 생성

        public diary_del(Diary_main diary_main)
        {
            object_diary_main = diary_main;
            InitializeComponent();
        }

        private void del_button_Click(object sender, EventArgs e)
        {
            del_db();
        }

        private void cancel_button_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void del_db()
        {
            

            del_db((object_diary_main.load_year_value() + object_diary_main.load_month_value() + object_diary_main.load_day_value()));
            object_diary_main.remove_view();

            /***********************db
            * 해당날짜의 diary data         
            * db에서 내용 삭제
            */
            this.Close();
        }
        private void del_db(string date)
        {
            try
            {

                string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" //연결하는 객체의 공급자명(확장자명)
                                         + "data source = "  //데이터 소스=(경로입력하라는거)
                                         + Application.StartupPath ///상대경로 읽어옴
                                         + @"\diaryplannerdb.mdb";//실제 데이터베이스 파일이름

                string commandString = "Select * from [diary]";//memos테이블에 있는 모든필드들을 모두 검색해라.

                OleDbDataAdapter DBAdapter ////DataSet을 채우고 데이터 소스를 업데이트하는 데 사용되는 데이터 명령 집합 및 데이터베이스 연결하게 하는 함수
                    = new OleDbDataAdapter(commandString, connectionString);//connectionString이라는 경로와 쿼리명령을 동적할당

                OleDbCommandBuilder myCommandBuilder ///연결된 데이터베이스에서 DataSet의 변경 내용을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다
                    = new OleDbCommandBuilder(DBAdapter);

                DataSet DS = new DataSet(); //DS라는 데이터 셋 동적할당

                DBAdapter.Fill(DS, "diary"); //DS라는 데이터셋에 새로운 memos 테이블에 추가 또는 갱신하겠다고 알림.

                DataTable aTable = DS.Tables["diary"];//memos테이블을 불러와 aTable을 새로 생성해서 저장

                DataColumn[] PrimaryKey = new DataColumn[1];

                PrimaryKey[0] = aTable.Columns["Ddate"]; //a컬럼을 기본키를 설정

                aTable.PrimaryKey = PrimaryKey;//기본키 할당

                DataRow currRow1 = aTable.Rows.Find(date + UserProfile.Instance().userId); //textBox값인 기본키 선택

                object_diary_main.dispose_imgae();
                
                
                //object_diary_main.Dispose();
                //디렉토리에서 사진  삭제
                GC.Collect();
                try
                {
                    File.Delete(Application.StartupPath + "/UserImage/" + UserProfile.Instance().userId + "/Picture_photo/" + currRow1["filename"].ToString());

                }
                catch (System.IO.IOException ex)
                {
                    MessageBox.Show(ex.ToString());
                }

                currRow1.Delete(); //삭제

                DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "diary");
            }
            catch (DataException DE)
            {
                
                MessageBox.Show(DE.Message);
            }
            catch (Exception DE)
            {
                MessageBox.Show(DE.Message);
            }
        }
    }
}
